4 REM PITCH SWITCH 5 REM EAR TRAINING 1, C64 VERSION 6 REM MAJOR SCALE 7 N=10 8 DIMSL$(5) 9 SL$(1)="017037019063021154022227025177028214032094034075" 10 SL$(2)="010060011114012216013156015070017037019063020100" 11 SL$(3)="022227025177028214030141034075038126043052045198" 12 SL$(4)="027056030141034075036085040200045198051097054111" 13 SL$(5)="007163008147009159010060011114012216014107015070" 15 V=54296:A2=54284:S2=54285:H2=54280:L2=54279:W2=54283 16 SC=53281:BO=53280:CO=54272:CR=53272 17 POKECR,23:POKEA2,12:POKES2,240 19 POKESC,1:POKEBO,6 20 PRINT"[147] [208]ITCH [211]WITCH [146]" 21 PRINT" [212]HIS PROGRAM WILL HELP YOU TO RECOGNIZE"; 22 PRINT"PITCH DIFFERENCES BETWEEN NOTES OF A":PRINT"MAJOR SCALE." 23 PRINT" [217]OU MUST ANSWER";N;"RIGHT TO FINISH THE":PRINT"GAME." 24 PRINT" [201]F YOU NEED TO HEAR A PROBLEM REPEATED,"; 25 PRINT"PRESS THE 'F1' KEY." 38 PRINT" [208]RESS ANY KEY." 40 GETM$:IFM$=""THEN40 42 POKEBO,7:R=0:W=0:PRINT"[147][196]IFFICULTY [204]EVEL[146]" 43 PRINT"1.-[203]EYNOTE INTERVALS ON THE SAME SCALE." 44 PRINT"2.-[203]EYNOTE INTERVALS ON VARYING SCALES." 45 PRINT"3.-[214]ARYING INTERVALS ON VARYING SCALES." 47 PRINT" [194]EGIN BY SELECTINTG 1,2,OR 3." 50 GETL$:IFL$=""THEN50 53 L=VAL(L$) 54 IFL>3ORL<1THEN50 79 REM PLAY SCALE 90 SN=INT(RND(1)*5+1) 100 POKEBO,2:PRINT"[147][200]ERE IS A MAJOR SCALE." 103 POKEV,15:PRINT"" 105 FOR K=1TO8 110 PH=VAL(MID$(SL$(SN),6*K-5,3)) 111 PL=VAL(MID$(SL$(SN),6*K-2,3)) 120 POKEH2,PH:POKEL2,PL:POKEW2,17:PRINTTAB(2*K+2)"[145][145][145][172][165]" 121 PRINTTAB(2*K+2)K 130 FORI=1TO200:NEXTI 140 POKEW2,0 150 NEXTK:POKEV,0 160 REM GIVE PROBLEM 165 IFAN$="[133]"THEN180 170 NN=INT(RND(1)*8+1) 171 N1=INT(RND(1)*8+1) 172 IFL<3THENN1=1 180 FH=VAL(MID$(SL$(SN),6*N1-5,3)) 181 FL=VAL(MID$(SL$(SN),6*N1-2,3)) 190 SH=VAL(MID$(SL$(SN),6*NN-5,3)) 191 SL=VAL(MID$(SL$(SN),6*NN-2,3)) 195 FORI=1TO500:NEXTI 196 IFL<3THEN200 197 PRINT"[200]ERE ARE TWO NOTES OF THE SCALE.":WM=0:GOTO205 199 IFL<3THEN200 200 PRINT"[200]ERE IS THE KEYNOTE FOLLOWED BY ONE OF":PRINT"THE OTHERS.":WM=0 205 FORI=1TO500:NEXTI 209 POKEV,15 210 POKEH2,FH:POKEL2,FL:POKEW2,17 213 PRINT"":FORX=1TON1:PRINTTAB(2*X+2)"[145]";:NEXTX 214 PRINT"[172][165][146]":PRINTTAB(2*X)"";N1;"[146]" 220 FORI=1TO300:NEXTI 230 POKEW2,0 240 FORI=1TO300:NEXTI 250 POKEH2,SH:POKEL2,SL:POKEW2,17 260 FORI=1TO300:NEXTI 270 POKEW2,0:POKEV,0 275 IFWM=1THEN610 280 PRINT"[212]YPE THE NUMBER OF THE SECOND NOTE. " 281 PRINT" " 290 GETAN$:IFAN$=""THEN290 291 IFAN$="[133]"THEN100 293 AN=VAL(AN$) 294 IFAN=0THEN290 295 IFAN=NNTHEN500 300 GOTO600 499 REM CORRECT 500 POKEBO,0:PRINT"[195][207][210][210][197][195][212][146]":POKEV,15:POKEH2,115:POKEL2,88:POKEW2,17 501 FORI=1TO80:NEXTI 502 POKEW2,0:POKEV,0 508 FORI=1TO1000:NEXTI 510 R=R+1 515 IFR=NTHEN800 520 IFL=1THEN100 530 GOTO90 599 REM WRONG 600 POKEBO,13:POKEV,15:POKEW2,33:FORX=1TO8 601 POKEH2,100-12*X:POKEL2,100+12*X:FORI=1TO200:NEXTI:NEXTX 602 POKEW2,0:POKEV,0:WM=1 605 PRINT"[212]HE ANSWER IS...":GOTO205 610 PRINT"":FORX=1TONN:PRINTTAB(2*X+2)"[145]";:NEXTX 611 PRINT"[172][165][146]":PRINTTAB(2*X)"";NN;"[146]" 613 PRINT" [208]RESS ANY KEY." 615 GETM$:IFM$=""THEN610 620 W=W+1 630 IFL=1THEN100 640 GOTO90 799 REM TALLY SCORE 800 POKEBO,1:POKEV,15:POKEW2,17 801 PRINT"[147] [217][193][200][207][207]![146]":FORX=1TO30:POKEH2,100+5*X:POKEL2,50 802 FORI=1TO20:NEXTI 803 NEXTX 805 POKEW2,0:POKEV,0 806 PRINT" [217]OU GOT";R;"RIGHT OUT OF";R+W;"." 810 PRINT"[208]RESS '[193]' FOR ANOTHER ROUND." 820 PRINT"[208]RESS '[210]' TO RETURN TO THE BEGINNING." 830 PRINT"[208]RESS '[197]' TO END." 840 GETM$:IFM$=""THEN840 850 IFM$="A"THEN42 853 IFM$="R"THEN19 856 PRINT"[147]":POKECR,21:END